package systemTests;

import systemFunctionality.Functionalities;;

public class Facade {
	
	Functionalities functionalities;
	
	public void zerarSistema() {
		functionalities = new Functionalities();
	}
	
	public void criarUsuario(String login, String nome, String endereco) throws Exception{
		functionalities.createUser(login, nome, endereco);
	}
	
	public String abrirSessao(String login) throws Exception{
		return Functionalities.openUserSession(login);
	}
	
	public String getAtributoUsuario(String login, String atributo) throws Exception{
		return functionalities.getUserAttribute(login, atributo);
	}
	
	public String cadastrarItem(String idSessao, String nome, String descricao, String categoria) throws Exception{
		return functionalities.registerItems(idSessao, nome, descricao, categoria);
	}
	
	public String getAtributoItem(String idItem, String atributo) throws Exception{
		return functionalities.getItemAttribute(idItem, atributo);
	}
	
	public String localizarUsuario(String idSessao, String chave, String atributo) throws Exception{
		return functionalities.findUser(idSessao, chave, atributo);
	}
	
	public String getRequisicoesDeAmizade(String idSessao) throws Exception{
		return functionalities.getFriendshipRequests(idSessao);
	}
	
	public void requisitarAmizade(String idSessao, String login) throws Exception{
		functionalities.requestFriendship(idSessao, login);
	}
	
	public boolean ehAmigo(String idSessao, String login) throws Exception{
		return functionalities.isFriend(idSessao, login);
	}
	
	public void aprovarAmizade(String idSessao, String login) throws Exception{
		functionalities.approveFriendship(idSessao, login);
	}
	
	public String getAmigos(String idSessao) throws Exception{
		return functionalities.getFriends(idSessao);
	}
	
	public String getAmigos(String idSessao, String login) throws Exception{
		return functionalities.getFriends(idSessao, login);
	}
	
	public String getItens(String idSessao) throws Exception{
		return functionalities.getItems(idSessao);
	}
	
	public String getItens(String idSessao, String login) throws Exception{
		return functionalities.getItems(idSessao, login);
	}
	
	public String getEmprestimos(String idSessao, String tipo) throws Exception{
		return functionalities.getLoans(idSessao, tipo);
	}
	
	public String requisitarEmprestimo(String idSessao, String idItem, int duracao) throws Exception{
		return functionalities.loanRequests(idSessao, idItem, duracao);
	}
	
	public String aprovarEmprestimo(String idSessao, String idRequisicaoEmprestimo) throws Exception{
		return functionalities.approveLoans(idSessao, idRequisicaoEmprestimo);
	}
	
	public void devolverItem(String idSessao, String idEmprestimo) throws Exception{
		functionalities.returnItem(idSessao, idEmprestimo);
	}
	
	public void confirmarTerminoEmprestimo(String idSessao, String idEmprestimo) throws Exception{
		functionalities.confirmsEndLoan(idSessao, idEmprestimo);
	}
	
	public String enviarMensagem(String idSessao, String destinatario, String assunto, String mensagem) throws Exception{
		return functionalities.sendMessage(idSessao, destinatario, assunto, mensagem);
	}
	
	public String lerTopicos(String idSessao, String tipo) throws Exception{
		return functionalities.readTopics(idSessao, tipo);
	}
	
	public String lerMensagens(String idSessao, String idTopico) throws Exception{
		return functionalities.readMessages(idSessao, idTopico);
	}
	
	public String enviarMensagem(String idSessao, String destinatario, String assunto, String  mensagem, String idRequisicaoEmprestimo) throws Exception{
		return functionalities.sendMessage(idSessao, destinatario, assunto, mensagem, idRequisicaoEmprestimo);
	}
	
	public void requisitarDevolucao(String idSessao, String idEmprestimo) throws Exception{
		functionalities.returnRequest(idSessao, idEmprestimo);
	}
	
	public void adicionarDias(int dias) throws Exception{
		functionalities.addDays(dias);
	}
	
	public void registrarInteresse(String idSessao, String idItem) throws Exception{
		functionalities.registerInterest(idSessao, idItem);
	}
	
	public String pesquisarItem(String idSessao, String chave, String atributo, String tipoOrdenacao, String criterioOrdenacao) throws Exception{
		return functionalities.searchItem(idSessao, chave, atributo, tipoOrdenacao, criterioOrdenacao);
	}
	
	public void desfazerAmizade(String idSessao, String amigo) throws Exception{
		functionalities.undoFriendship(idSessao, amigo);
	}
	
	public void apagarItem(String idSessao, String idItem) throws Exception{
		functionalities.deleteItem(idSessao, idItem);
	}
	
	public String getRanking(String idSessao, String categoria) throws Exception{
		return functionalities.getRanking(idSessao, categoria);
	}
	
	public String historicoAtividades(String idSessao) throws Exception{
		return functionalities.historicOfActivities(idSessao);
	}
	
	public String historicoAtividadesConjunto(String idSessao) throws Exception{
		return functionalities.historicOfGroupActivities(idSessao);
	}
	
	public void encerrarSistema(){
		
	}
}